/****************************************************************************//**
 * @brief      使用滴答定时器增加了动态任务管理，执行时间监控，临界区保护，任务状态机
 * 运行时参数配置，错误检测机制，代码可移植性，资源占用3.5k。
 *
 * @param[in]  
 *                  
 * @return     SUCC or ERR
 *
 *******************************************************************************/




#include "drv_task.h"
#include "GPIO.h"		
#include "CAN.h"
// 系统配置参数

#define MAX_TASKS           8     // 最大任务数
#define TICK_HANDLER        SysTick_Handler  // 根据具体平台修改
// 任务控制块
uint32_t system_tick = 0;
static sTask task_list[MAX_TASKS]; 
static bool scheduler_initialized = false;

// 临界区保护宏（根据具体MCU实现）
#define ENTER_CRITICAL()     __disable_irq()
#define EXIT_CRITICAL()      __enable_irq()



// 滴答定时器初始化
ResultStatus_t SysTick_Init(void)
{
	uint32_t freq=0,tick=0;
	ResultStatus_t res = SUCC;
  
	//SysTick_Config(64000); //systick_clk = core_clk=64MHZ, 1ms INT
	//SysTick_Config(40000); //systick_clk = core_clk=40MHZ, 1ms INT
	
	freq = CLK_GetModuleClkFreq(CLK_CORE, CLK_SRC_OSC40M);
	if (0U == freq){
		res =  ERR;
	}
	else{
		tick = (freq / 1000U) * SysTick_INT_MS;
		if (SysTick_Config(tick) != 0U){
			res = ERR;
		}
	}
	return res;
}



static void APP_Task_10Ms(void)
{   
    
}

void LED_Task(void) 
{  	
    
//    uint8_t turn_failoff_state_temp1 = (rx_buf.data[3] & 0x03U) << 1U;
//    uint8_t turn_failoff_state_temp2 = (rx_buf.data[4] & 0x80U) >> 7U;
//    uint8_t turn_failoff_state= turn_failoff_state_temp1+ turn_failoff_state_temp2;
    plcan_send(0x145);
//    if(((rx_buf.msgId == 0x087C0013 || rx_buf.msgId == 0x087C0015) && (turn_failoff_state ==  0x02U))){
//        GPIO_SetPinOutput(PORT_E, GPIO_7);	
//    }else{
//       GPIO_ClearPinOutput(PORT_E, GPIO_7); 
//    }
    if(rx_buf.msgId == 0x2AC){
    
    }
    
//    GPIO_TogglePinOutput(PORT_E, GPIO_7);
}


